﻿using System;
using System.Collections.Generic;

namespace ConsoleTests
{
    public class OrganizadorIda
    {        
        private List<Partido> partidos = new List<Partido>();
        
        public List<Partido> Organizar(List<Equipo> equipos)
        {
            int numeroEquipos = equipos.Count;
            int idFijo = 0;

            partidos.Clear();

            if(numeroEquipos % 2 == 1)
            {
                Equipo dummie = new Equipo();
                dummie.Nombre = "DUMMIE!!";
                equipos.Add(dummie);
                
                numeroEquipos++;
            }

            Equipo fijo = equipos[idFijo];
            List<Equipo> aux = equipos.GetRange(1, numeroEquipos - 1);

            for (int fecha = 1; fecha < numeroEquipos; fecha++)
            {
                //El fijo con el del medio de la lista.
                CrearPartido(fijo, aux[aux.Count / 2], fecha);

                for(int i = 0; i < (aux.Count / 2); i++)
                {
                    CrearPartido(aux[i], aux[aux.Count - i - 1], fecha);
                } 

                //El primer equipo lo ponemos al final.
                Equipo equipoAux = aux[0];
                aux.Remove(equipoAux);
                aux.Add(equipoAux);
            }

            for (int i = 0; i < partidos.Count; i++)
            {
                if (partidos[i].Equipo.Nombre.Equals("DUMMIE!!") || partidos[i].Equipo1.Nombre.Equals("DUMMIE!!"))
                {
                    partidos.Remove(partidos[i]);
                    i = 0;
                }
            }

            //if (partidos.Count != (numeroEquipos * (numeroEquipos - 1)) / 2)
            //    throw new Exception("No esta bien implementado el organizador de partidos.");

            return partidos;
        }

        private void CrearPartido(Equipo equipoA, Equipo equipoB, int fecha)
        {
            Partido partido = new Partido();
            partido.Equipo = equipoA;
            partido.Equipo1 = equipoB;
            partido.IDFecha = fecha;

            partidos.Add(partido);
        }
    }
}